using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Boa.AIT.AccesoDatos.Contratos
{
    public class DataFactory
    {
        #region Constructor
        static DataFactory instance = null;
        public static DataFactory Current
        {
            get
            {
                if (instance == null)
                    instance = new DataFactory();
                return instance;
            }
        }
        public T GetInstance<T>(string className)
        {
            return Create<T>("Boa.AIT.AccesoDatos.Contexto." + className + ",Boa.AIT.AccesoDatos.Contexto");
        }
        public static T Create<T>(string classFullName)
        {
            var result = (T)Didsoft.Core.Reflection.InstanciateObjectFromAssembly(classFullName);
            if (result == null)
                throw new NullReferenceException("cannot create instance of type " + classFullName);
            return result;
        }
        #endregion
        public IAIT_TipoEquipoAccesoDatos GetAIT_TipoEquipoAccesoDatos()
        {
            return this.GetInstance<IAIT_TipoEquipoAccesoDatos>("AIT_TipoEquipoAccesoDatos");
        }
        public IAIT_AccionesMantenimientoAccesoDatos GetAIT_AccionesMantenimientoAccesoDatos()
        {
            return this.GetInstance<IAIT_AccionesMantenimientoAccesoDatos>("AIT_AccionesMantenimientoAccesoDatos");
        }
        public IAIT_AlmacenEmpresaAccesoDatos GetAIT_AlmacenEmpresaAccesoDatos()
        {
            return this.GetInstance<IAIT_AlmacenEmpresaAccesoDatos>("AIT_AlmacenEmpresaAccesoDatos");
        }
        public IAIT_AsignaEmpleadoAccesoDatos GetAIT_AsignaEmpleadoAccesoDatos()
        {
            return this.GetInstance<IAIT_AsignaEmpleadoAccesoDatos>("AIT_AsignaEmpleadoAccesoDatos");
        }
        public IAIT_AsignarEquipoAlmacenAccesoDatos GetAIT_AsignarEquipoAlmacenAccesoDatos()
        {
            return this.GetInstance<IAIT_AsignarEquipoAlmacenAccesoDatos>("AIT_AsignarEquipoAlmacenAccesoDatos");
        }
        public IAIT_ConfiguracionAccesoDatos GetAIT_ConfiguracionAccesoDatos()
        {
            return this.GetInstance<IAIT_ConfiguracionAccesoDatos>("AIT_ConfiguracionAccesoDatos");
        }
        public IAIT_EquipoCompuestoAccesoDatos GetAIT_EquipoCompuestoAccesoDatos()
        {
            return this.GetInstance<IAIT_EquipoCompuestoAccesoDatos>("AIT_EquipoCompuestoAccesoDatos");
        }
        public IAIT_EquipoDisponibleAccesoDatos GetAIT_EquipoDisponibleAccesoDatos()
        {
            return this.GetInstance<IAIT_EquipoDisponibleAccesoDatos>("AIT_EquipoDisponibleAccesoDatos");
        }
        public IAIT_EquipoDisponibleItemAccesoDatos GetAIT_EquipoDisponibleItemAccesoDatos()
        {
            return this.GetInstance<IAIT_EquipoDisponibleItemAccesoDatos>("AIT_EquipoDisponibleItemAccesoDatos");
        }
        public IAIT_EquipoITAccesoDatos GetAIT_EquipoITAccesoDatos()
        {
            return this.GetInstance<IAIT_EquipoITAccesoDatos>("AIT_EquipoITAccesoDatos");
        }
        public IAIT_GarantiaAccesoDatos GetAIT_GarantiaAccesoDatos()
        {
            return this.GetInstance<IAIT_GarantiaAccesoDatos>("AIT_GarantiaAccesoDatos");
        }
        public IAIT_MantenimientoPreventivoAccesoDatos GetAIT_MantenimientoPreventivoAccesoDatos()
        {
            return this.GetInstance<IAIT_MantenimientoPreventivoAccesoDatos>("AIT_MantenimientoPreventivoAccesoDatos");
        }
        public IAIT_MarcaEquipoAccesoDatos GetAIT_MarcaEquipoAccesoDatos()
        {
            return this.GetInstance<IAIT_MarcaEquipoAccesoDatos>("AIT_MarcaEquipoAccesoDatos");
        }
        public IAIT_ModeloEquipoAccesoDatos GetAIT_ModeloEquipoAccesoDatos()
        {
            return this.GetInstance<IAIT_ModeloEquipoAccesoDatos>("AIT_ModeloEquipoAccesoDatos");
        }
        public IAIT_ProveedorAccesoDatos GetAIT_ProveedorAccesoDatos()
        {
            return this.GetInstance<IAIT_ProveedorAccesoDatos>("AIT_ProveedorAccesoDatos");
        }
        public IAIT_RegionAccesoDatos GetAIT_RegionAccesoDatos()
        {
            return this.GetInstance<IAIT_RegionAccesoDatos>("AIT_RegionAccesoDatos");
        }
        public IAIT_SolicitudEquipoAccesoDatos GetAIT_SolicitudEquipoAccesoDatos()
        {
            return this.GetInstance<IAIT_SolicitudEquipoAccesoDatos>("AIT_SolicitudEquipoAccesoDatos");
        }
        public IAIT_TallerProveedorAccesoDatos GetAIT_TallerProveedorAccesoDatos()
        {
            return this.GetInstance<IAIT_TallerProveedorAccesoDatos>("AIT_TallerProveedorAccesoDatos");
        }
        public IAIT_TipoConfiguracionAccesoDatos GetAIT_TipoConfiguracionAccesoDatos()
        {
            return this.GetInstance<IAIT_TipoConfiguracionAccesoDatos>("AIT_TipoConfiguracionAccesoDatos");
        }

        public IDtoBOAPersonal GetBOAPersonalAccesoDatos()
        {
            return this.GetInstance<IDtoBOAPersonal>("BOAPersonalAccesoDatos");
        }

    }
}

